package com.copa.l1616;

/**
 * @author copa
 * @createDate 2023-03-18 16:31
 * @function 暴力法（检测不通过，超时）
 */
public class Test1 {

    public boolean checkPalindromeFormation(String a, String b) {
        String tempA = "";
        String tempB = "";
        int n = a.length();
        // 以该长度的遍历次数作为基准
        for (int i = 0; i <= n; i++) {
            // a前缀与b后缀比较
            tempA = a.substring(0, i);
            tempB = b.substring(i, n);
            if (checkPalindrome(tempA, tempB)) {
                return true;
            }
            // b前缀与a后缀比较
            tempA = b.substring(0, i);
            tempB = a.substring(i, n);
            if (checkPalindrome(tempA, tempB)) {
                return true;
            }
        }

        return false;
    }

    private Boolean checkPalindrome(String tempA, String tempB) {
        int n;
        // 若只有tempA有字符
        if (tempB.equals("") && !tempA.equals("")) {
            n = tempA.length();
            for (int i = 0; i < n / 2; i++) {
                if (tempA.charAt(i) != tempA.charAt(n - i - 1)) {
                    return false;
                }
            }
            return true;
        }
        // 若只有tempB有字符
        if (tempA.equals("") && !tempB.equals("")) {
            n = tempB.length();
            for (int i = 0; i < n / 2; i++) {
                if (tempB.charAt(i) != tempB.charAt(n - i - 1)) {
                    return false;
                }
            }
            return true;
        }
        // 若tempA和tempB都有字符，就拼接进行比较
        String temp = tempA + tempB;
        n = temp.length();
        for (int i = 0; i < n; i++) {
            if (temp.charAt(i) != temp.charAt(n - i - 1)) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        String a = "xbdef";
        String b = "xecab";
        System.out.println(new Test1().checkPalindromeFormation(a, b));
    }
}
